/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package framework.utilitarios;

import java.util.Date;
import java.text.SimpleDateFormat;

/**
 *
 * @author Sérgio Carlos Peres
 */
public class Data {
    String mes, dia, ano, diaSemana, hora;
    SimpleDateFormat horaFormatada = new SimpleDateFormat("HH:mm:ss");
    
    public String dataFormatoPadrao()
    {
        leData();
        return diaSemana + ", " + dia + " de " + mes + " de " + ano;
    }    
    
    public String horaFormatoPadrao()
    {
        leHora();
        return hora;
    }
    
    public void leHora()
    {
        Date horaAtual = new Date();
        this.hora = horaFormatada.format(horaAtual);
    }
    
    public void leData()
    {
        Date data = new Date();
        dia = "" + data.getDate();
        ano = "" + (1900 + data.getYear());
        
        switch (data.getDay())
        {
            case 0 : diaSemana = "Domingo";break;
            case 1 : diaSemana = "Segunda";break;
            case 2 : diaSemana = "Terca";break;
            case 3 : diaSemana = "Quarta";break;
            case 4 : diaSemana = "Quinta";break;
            case 5 : diaSemana = "Sexta";break;
            case 6 : diaSemana = "Sabado";break;
        }
        
        switch (data.getMonth())
        { 
            case 0 : mes = "Janeiro";break;
            case 1 : mes = "Fevereiro";break;
            case 2 : mes = "Marco";break;
            case 3 : mes = "Abril";break;
            case 4 : mes = "Maio";break;
            case 5 : mes = "Junho";break;
            case 6 : mes = "Julho";break;
            case 7 : mes = "Agosto";break;
            case 8 : mes = "Setembro";break;
            case 9 : mes = "Outubro";break;
            case 10 : mes = "Novembro";break;
            case 11 : mes = "Desembro";break;
        }
    }
    
    /**
     * Pega a hota atual do SO e retoma um Timestamp.
     * 
     * @return Data atual no formato: AAAA-MM-DD hh:mm:ss
     */
    public static java.sql.Timestamp retornaDataAtual(){ // ####-##-## ##:##:##
        Date data = new Date();
        return new java.sql.Timestamp(data.getTime());
    }

    /**
     * Processa uma string e retorma um timestamp equivalente.
     * 
     * @param data data no formato: DD/MM/AAAA
     * @return Timestamp que tem como formato: AAAA-MM-DD hh:mm:ss
     */
    public static java.sql.Timestamp retornaData(String data){
        int dia, mes, ano;
        if (Integer.parseInt(data.substring(0, 2))<10)
             dia = Integer.parseInt(data.substring(1, 2));
        else dia = Integer.parseInt(data.substring(0, 2));
        if (Integer.parseInt(data.substring(3, 5))<10)
            mes = Integer.parseInt(data.substring(4, 5))-1;
        else mes = Integer.parseInt(data.substring(3, 5))-1;
        mes = Integer.parseInt(data.substring(3, 5))-1;
        ano = Integer.parseInt(data.substring(6,10))-1900;
        Date temp = new Date(ano, mes, dia, new Date().getHours(), new Date().getMinutes(), new Date().getSeconds());
        return new java.sql.Timestamp(temp.getTime());
    }
    
    
    /**
     * Processa duas string e retorma um timestamp equivalente.
     * 
     * @param data data no formato: DD/MM/AAAA
     * @param hora hora no formato: hh:mm
     * @return Timestamp que tem como formato: AAAA-MM-DD hh:mm:ss
     */
    public static java.sql.Timestamp retornaData(String data, String hora){
        int dia, mes, ano, h, m;
        if (Integer.parseInt(data.substring(0, 2))<10)
             dia = Integer.parseInt(data.substring(1, 2));
        else dia = Integer.parseInt(data.substring(0, 2));
        if (Integer.parseInt(data.substring(3, 5))<10)
            mes = Integer.parseInt(data.substring(4, 5))-1;
        else mes = Integer.parseInt(data.substring(3, 5))-1;
        mes = Integer.parseInt(data.substring(3, 5))-1;
        ano = Integer.parseInt(data.substring(6,10))-1900;
        h = Integer.parseInt(hora.substring(0, 2));
        m = Integer.parseInt(hora.substring(3));
        Date temp = new Date(ano, mes, dia, h, m, 00);
        return new java.sql.Timestamp(temp.getTime());
    }
    
    /**
     * Pega a data atual do SO e a retoma uma string.
     * 
     * @return Dara atual em String com o formato: DD/MM/AAAA
     */
    public static String retonaString() { // ##/##/####
        Date data = new Date();
        String dia = "" + data.getDate();
        if (Integer.parseInt(dia) < 10)
                dia = "0"+dia;
        String ano = "" + (1900 + data.getYear());
        String mes = "";
        
        switch (data.getMonth())
        { 
            case 0 : mes = "01";break;
            case 1 : mes = "02";break;
            case 2 : mes = "03";break;
            case 3 : mes = "04";break;
            case 4 : mes = "05";break;
            case 5 : mes = "06";break;
            case 6 : mes = "07";break;
            case 7 : mes = "08";break;
            case 8 : mes = "09";break;
            case 9 : mes = "10";break;
            case 10 : mes = "11";break;
            case 11 : mes = "12";break;
        }
        return dia+"/"+mes+"/"+ano;
    }
    
    /**
     * Processa um date e retorma uma string equivalente.
     * 
     * @param data Uma data qualquer
     * @return Uma data no formato: DD/MM/AAAA
     */
    public static String retornaStirng(Date data) {
        if (data != null) {
            String dia = "" + data.getDate();
            if (Integer.parseInt(dia) < 10)
                dia = "0"+dia;
            String ano = "" + (1900 + data.getYear());
            String mes = "";

            switch (data.getMonth())
            {
                case 0 : mes = "01";break;
                case 1 : mes = "02";break;
                case 2 : mes = "03";break;
                case 3 : mes = "04";break;
                case 4 : mes = "05";break;
                case 5 : mes = "06";break;
                case 6 : mes = "07";break;
                case 7 : mes = "08";break;
                case 8 : mes = "09";break;
                case 9 : mes = "10";break;
                case 10 : mes = "11";break;
                case 11 : mes = "12";break;
            }
            return dia+"/"+mes+"/"+ano;
        } else return null;

    }
    
    /**
     * Pega a data atual do SO e a retoma uma string.
     * 
     * @return Dara atual em String com o formato: AAAA-MM-DD
     */
    public static String retona() {
        Date data = new Date();
        String dia = "" + data.getDate();
        if (Integer.parseInt(dia) < 10)
                dia = "0"+dia;
        String ano = "" + (1900 + data.getYear());
        String mes = "";
        
        switch (data.getMonth())
        { 
            case 0 : mes = "01";break;
            case 1 : mes = "02";break;
            case 2 : mes = "03";break;
            case 3 : mes = "04";break;
            case 4 : mes = "05";break;
            case 5 : mes = "06";break;
            case 6 : mes = "07";break;
            case 7 : mes = "08";break;
            case 8 : mes = "09";break;
            case 9 : mes = "10";break;
            case 10 : mes = "11";break;
            case 11 : mes = "12";break;
        }
        return ano+"-"+mes+"-"+dia;
    }
    /**
     * Pega a data atual do SO e a retoma uma string.
     * 
     * @param data Uma data para trasformar em String.
     * 
     * @return Dara atual em String com o formato: AAAA-MM-DD
     */
    public static String retona(Date data) {
        String dia = "" + data.getDate();
        if (Integer.parseInt(dia) < 10)
                dia = "0"+dia;
        String ano = "" + (1900 + data.getYear());
        String mes = "";
        
        switch (data.getMonth())
        { 
            case 0 : mes = "01";break;
            case 1 : mes = "02";break;
            case 2 : mes = "03";break;
            case 3 : mes = "04";break;
            case 4 : mes = "05";break;
            case 5 : mes = "06";break;
            case 6 : mes = "07";break;
            case 7 : mes = "08";break;
            case 8 : mes = "09";break;
            case 9 : mes = "10";break;
            case 10 : mes = "11";break;
            case 11 : mes = "12";break;
        }
        return ano+"-"+mes+"-"+dia;
    }
}
